To meet requirements of internationalization of applications, all visible text data in GUIs of the applications should be translated into different languages. In general, in an application, visible text data are separated from binary codes and stored in resource files individually. When the application is executed, the application logic will retrieve the corresponding visible text data from the resource files according to user locales and show them in the GUIs of the application.
Usually, a resource file can be a Program Integrated Information (PII) file. The so-called program integrated information means user-visible text in a software program and the visible text can be accessible only by executing the software program or using the software program. The program integrated information generally contains user interface text, messages, help information, intelligent agents, coaches, etc., and is used to guide users to complete complex tasks.
In addition, the resource file can be a resource bundle of Java property file, a resource bundle of XML, and so on.
During the current internationalization of applications, at first, when developing an application, developers collect the necessary visible text data in the GUIs of the application and put them into the resource files. And then, these resource files are sent to translators and are translated into different languages.
However, such technical solution would have the following problems:
1. When collecting the visible text data, sometimes the developers may forget to put some visible text data into the resource files due to cursoriness, so that the text data will not be translated. Such a mistake may not be found until late test cycles.
2. When the translators translate a single string in the resource file, because of unawareness of the application environment of the string, i.e. context, the translators cannot translate it precisely, especially when the string has multiple meanings. And such a mistake may not be found until the Translation Verification Test (TVT).
The Translation Verification Test (TVT) is used to reduce the translation related problems. Usually many testers from different countries or regions will take part in the TVT process. The developers should build up different test environments for the testers from different countries or regions and write TVT test cases to ensure that all the translatable text data are translated correctly. As a result, the developers will spend a lot of time and efforts to collaborate with the testers and maintain the massive test environments.
U.S. Pat. No. 5,974,372 “Graphical User interface (GUI) Language Translator” discloses a method for translating strings presented in the GUIs which is performed in a WINDOWS platform. In this method, the strings in the GUIs are intercepted by means of a Windows Hook technique and putted into a temporary table. And then the user can translate the strings in the temporary table. However, the method can be only used for the Windows applications. Only the strings in the GUIs, rather than the sources of the strings, are recorded. In this way, the same translation may be used for the strings having multiple meanings in different application environments, resulting in the imprecise translation.
U.S. Pat. No. 6,735,759 “Editing system for translating displayed user language using a wrapper class” discloses a method enabling translators to modify the displayed strings in the running interfaces of the application directly. However, the method requires the developers to develop a series of Java classes specific for supporting the direct modifications to the strings in the controls in the user interfaces, and introduces a big variation to the traditional internationalization method of the applications.
U.S. Pat. No. 6,904,563 “Editing Platforms for Remote User interface Translation” discloses a method of translating the user interfaces, in which the program interfaces are captured when the application is executed and the captured program interfaces can be presented in a different place where the user can edit the strings in the interfaces. However, the method needs to monitor changes of the program interfaces using a background process and records the related information of a control when the control is created through the background process. So the program developers will write a lot of additional codes.